﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using SGAEntidades;
using SGABDUtil;
using SGAInterfaces;

namespace SGAAccesoDatos
{
    public class MotivoViajeTaxi : IMotivoViajeTaxi
    {
        public IList<MotivoViajeTaxiInfo> Listar(MotivoViajeTaxiInfo oMotivoViajeTaxi)
        {
            var sqlParm = new SqlParameter[4];
            var oListaMotivos = new List<MotivoViajeTaxiInfo>();

            sqlParm[0] = new SqlParameter("@Id_Motivo", SqlDbType.VarChar);
            if (oMotivoViajeTaxi.IdMotivo != null) { sqlParm[0].Value = oMotivoViajeTaxi.IdMotivo; } else { sqlParm[0].Value = DBNull.Value; }

            sqlParm[1] = new SqlParameter("@Descripcion", SqlDbType.VarChar);
            if (oMotivoViajeTaxi.Descripcion != null) { sqlParm[1].Value = oMotivoViajeTaxi.Descripcion; } else { sqlParm[1].Value = DBNull.Value; }

            sqlParm[2] = new SqlParameter("@Flag_Taxi", SqlDbType.VarChar);
            if (oMotivoViajeTaxi.FlagTaxi != null) { sqlParm[2].Value = oMotivoViajeTaxi.FlagTaxi; } else { sqlParm[2].Value = DBNull.Value; }

            sqlParm[3] = new SqlParameter("@Flag_Viaje", SqlDbType.VarChar);
            if (oMotivoViajeTaxi.FlagViaje != null) { sqlParm[3].Value = oMotivoViajeTaxi.FlagViaje; } else { sqlParm[3].Value = DBNull.Value; }

            using (
                var drd = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringDistributedTransaction,
                                                  CommandType.StoredProcedure, "SGA_SP_CONSULTAR_MOTIVO_VIAJE_TAXI",
                                                  sqlParm))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        while (drd.Read())
                        {
                            oListaMotivos.Add(new MotivoViajeTaxiInfo(drd.GetString(0).Trim(), drd.GetString(1).Trim(), drd.GetString(2).Trim(), drd.GetString(3).Trim(), null));
                        }
                    }
                }
            }
            return oListaMotivos;
        }

        public MotivoViajeTaxiInfo Consultar(MotivoViajeTaxiInfo oMotivoViajeTaxi)
        {
            var sqlParm = new SqlParameter[4];
            var oEntMotivo = new MotivoViajeTaxiInfo();

            sqlParm[0] = new SqlParameter("@Id_Motivo", SqlDbType.VarChar);
            if (oMotivoViajeTaxi.IdMotivo != null) { sqlParm[0].Value = oMotivoViajeTaxi.IdMotivo; } else { sqlParm[0].Value = DBNull.Value; }

            sqlParm[1] = new SqlParameter("@Descripcion", SqlDbType.VarChar);
            if (oMotivoViajeTaxi.Descripcion != null) { sqlParm[1].Value = oMotivoViajeTaxi.Descripcion; } else { sqlParm[1].Value = DBNull.Value; }

            sqlParm[2] = new SqlParameter("@Flag_Taxi", SqlDbType.VarChar);
            if (oMotivoViajeTaxi.FlagTaxi != null) { sqlParm[2].Value = oMotivoViajeTaxi.FlagTaxi; } else { sqlParm[2].Value = DBNull.Value; }

            sqlParm[3] = new SqlParameter("@Flag_Viaje", SqlDbType.VarChar);
            if (oMotivoViajeTaxi.FlagViaje != null) { sqlParm[3].Value = oMotivoViajeTaxi.FlagViaje; } else { sqlParm[3].Value = DBNull.Value; }

            using (
                var drd = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringDistributedTransaction,
                                                  CommandType.StoredProcedure, "SGA_SP_CONSULTAR_MOTIVO_VIAJE_TAXI",
                                                  sqlParm))
            {
                if (drd != null)
                {
                    if (drd.HasRows)
                    {
                        drd.Read();
                        oEntMotivo = new MotivoViajeTaxiInfo(drd.GetString(0).Trim(), drd.GetString(1).Trim(), drd.GetString(2).Trim(), drd.GetString(3).Trim(), null);
                    }
                }
            }
            return oEntMotivo;
        }
    }
}
